#!/bin/bash

# 定义API基础URL
API_BASE_URL="https://previewcloud.d8d.fun/api/1790/v1"

# 读取IP地址
response=$(curl -k "$API_BASE_URL/ping/ip/search")
echo "获取的响应: $response"

ip_list=$(echo $response | jq -c '.[]')
if [ -z "$ip_list" ]; then
    echo "没有获取到任何IP地址"
    exit 1
fi

# 计算IP地址总数
total_ips=$(echo $response | jq 'length')

# 定义处理单个IP的函数
process_ip() {
    local ip=$1
    local counter=$2
    local total=$3
    local id=$(echo $ip | jq -r '._id')
    local ip_address=$(echo $ip | jq -r '."IP地址"')
    local asset_name=$(echo $ip | jq -r '."资产名称"')

    echo "正在处理第 $counter / $total 个IP地址"
    echo "正在ping $ip_address (资产名称: $asset_name)..."

    # 执行ping命令
    if ping -c 4 $ip_address > /dev/null 2>&1; then
        status=1
        packet_loss=2
        network_status=1
        echo "$ip_address: 设备状态正常"
    else
        status=2
        packet_loss=1
        network_status=2
        echo "$ip_address: 设备状态异常"
    fi

    # 调用日志接口
    curl -kX POST "$API_BASE_URL/ping_log/add" -H "Content-Type: application/json" -d "{\"设备ID\":$id, \"设备状态\": $status, \"网络状态\":$network_status, \"丢包率\": $packet_loss, \"设备名称\": \"$asset_name\"}"
}

export -f process_ip
export API_BASE_URL
export total_ips

# 使用GNU Parallel并行处理IP列表
echo "$ip_list" | jq -c '.' | parallel -j 10 --progress process_ip {} {#} $total_ips

echo "所有IP处理完成"
